Docker Volume
$ docker volume --help
create, inspect, ls, prune, rm
ls, inspect, prune は一度は使っておきたい。
Dockerの構成要素?の1つ。container, network, namespace??などの あるコンテナーのvolumeは、/var/lib/docker/volumes 配下に mountされている。 volume, containerのdisk領域?をホストのどこにマウントするか?というのが、volumeの話?
-v /foo:/var/bar で container側の /var/bar を、hostの /fooにmountできる。
-v hello で、container側の helloが、host側の /var/lib/docker/volumes以下にディレクトリ作ってmountされる。
--volumes-from foo-container で、foo-containerのvolumeと同じものを使う(共用できる?)
概観
for persisting data generated by and used by Docker containers.
3つ方法で containerから host側のリソース(ファイルシステム、メモリ)を見る。
bind mounts
hostのディレクトリをそのまま使うので、構造などがホスト側で決まる
volumes
Docker側でmanage可能で、いろいろ利点はある。
backup, migrateが容易 than bind
windowsでもok
複数のcontainerで共用できる
remote, cloudなどにvolume可能(そうなのか)
containerにあるデータを指定して、volume作成可能
tmpfs mount
メモリを ファイルシステムに使うので、いろいろ用途はありそうだが、、
https://gyazo.com/44ed5b87860fd2b0c841544d6380bc21
サイトにある図. volumeは docker専用areaになる?のが(大きな、唯一な?)相違点
hostからの書き込みは想定されてない?
Command
New users should try --mount syntax which is simpler than --volume syntax.
hostとcontainerで、ファイルが同期?できる。container側から hostの filesystemにbind mount する。
-v で、container側のファイルシステムのポイント?(ディレクトリ)を指定する。
host側は、/var/lib/docker/volumes/xxxx_contaienr_some_hashing???.../ なところにいる。
$ docker rm a_container
としても、containerは消えるけど、volumeは残る。言い換えると、知らない内に/var/lib/docker/volumnsは堆積するかも
なので、docker volume prune で、簡単に?削除できる。
使用してないcontainerのvolumeを消すけど、それでいいかは確認する。